using System.Globalization;

namespace RadioTimer.Converters
{
    /// <summary>
    /// 颜色到画笔转换器
    /// 实现IValueConverter接口，用于在XAML数据绑定中将Color类型转换为SolidColorBrush类型
    /// 常用于将ViewModel中的Color属性绑定到UI元素的Brush属性
    /// 支持双向转换，可以在Color和Brush之间相互转换
    /// </summary>
    public class ColorToBrushConverter : IValueConverter
    {
        /// <summary>
        /// 将Color值转换为SolidColorBrush
        /// 用于正向数据绑定，将ViewModel中的Color属性转换为界面可使用的Brush
        /// </summary>
        /// <param name="value">要转换的原始值，期望Color类型</param>
        /// <param name="targetType">目标类型，通常为Brush类型</param>
        /// <param name="parameter">转换参数（未使用）</param>
        /// <param name="culture">区域信息（未使用）</param>
        /// <returns>返回SolidColorBrush实例，如果转换失败则返回灰色画笔</returns>
        public object? Convert(object? value, Type targetType, object? parameter, CultureInfo culture)
        {
            // 检查输入值是否为Color类型
            if (value is Color color)
            {
                return new SolidColorBrush(color);
            }
            // 如果转换失败，返回默认的灰色画笔
            return new SolidColorBrush(Colors.Gray);
        }

        /// <summary>
        /// 将SolidColorBrush转换回到Color
        /// 用于反向数据绑定，将界面中的Brush转换回到ViewModel的Color属性
        /// </summary>
        /// <param name="value">要转换的原始值，期望SolidColorBrush类型</param>
        /// <param name="targetType">目标类型，通常为Color类型</param>
        /// <param name="parameter">转换参数（未使用）</param>
        /// <param name="culture">区域信息（未使用）</param>
        /// <returns>返回Color实例，如果转换失败则返回灰色</returns>
        public object? ConvertBack(object? value, Type targetType, object? parameter, CultureInfo culture)
        {
            // 检查输入值是否为SolidColorBrush类型
            if (value is SolidColorBrush brush)
            {
                return brush.Color;
            }
            // 如果转换失败，返回默认的灰色
            return Colors.Gray;
        }
    }
}